package logging

import (
	"fmt"
	"go-gin-example/pkg/file"
	"go-gin-example/pkg/setting"
	"os"
	"time"
)

// var (
// 	// 定义日志保存路径
// 	LogSavePath = "./gologs/"
// 	LogSaveName = "log"
// 	LogFileExt  = "log"
// 	TimeFormat  = "20210501"
// )
var logSetting = setting.AppSetting

// 获取文件路径
func getLogFilePath() string {
	// return fmt.Sprintf("%s", LogSavePath)
	return fmt.Sprintf("%s%s", logSetting.RuntimeRootPath, logSetting.LogSavePath)
}

// 获取日志全路径
// func getLogFileFullPath() string {
// prefixPath := getLogFilePath()
// suffixPath := fmt.Sprintf("%s%s.%s", logSetting.LogSaveName, time.Now().Format(logSetting.TimeFormat), logSetting.LogFileExt)

// return fmt.Sprintf("%s%s", prefixPath, suffixPath)
// 	return fmt.Sprintf("%s%s.%s", logSetting.LogSavePath, time.Now().Format(logSetting.TimeFormat), logSetting.LogFileExt)
// }

// 获取文件路径
func getLogFileName() string {
	return fmt.Sprintf("%s%s.%s",
		logSetting.LogSaveName,
		time.Now().Format(logSetting.TimeFormat),
		logSetting.LogFileExt,
	)
}

// 打开日志文件
func openLogFile(fileName, filePath string) (*os.File, error) {
	// 返回文件信息
	// _, err := os.Stat(filePath)
	// switch {
	// // 文件路径不存在则创建
	// case os.IsNotExist(err):
	// 	mkDir()
	// case os.IsPermission(err):
	// 	// 没有权限则返回没有权限信息
	// 	log.Fatalf("permission : %v", err)
	// }

	// handle, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	// if err != nil {
	// 	log.Fatalf("fail to openfile : %v", err)
	// }

	// return handle
	// 获取根路径
	dir, err := os.Getwd()
	if err != nil {
		return nil, fmt.Errorf("os.Getwd err: %v", err)
	}

	src := dir + "/" + filePath
	perm := file.CheckPermission(src)
	if perm == true {
		return nil, fmt.Errorf("file.CheckPermission Permission denied src: %s", src)
	}

	err = file.IsNotExistMkdir(src)
	if err != nil {
		return nil, fmt.Errorf("file.IsNotExistMkdir src: %s, err: %v", src, err)
	}

	file.CheckExist(src + fileName)

	f, err := file.Open(src+fileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		return nil, fmt.Errorf("Fail to OpenFile : %v", err)
	}
	return f, nil
}

// func mkDir() {
// 	// 获取当前路径的根路径
// 	dir, _ := os.Getwd()
// 	// 创建目录并授权
// 	err := os.MkdirAll(dir+"/"+getLogFilePath(), os.ModePerm)
// 	if err != nil {
// 		panic(err)
// 	}
// }
